# 打印金字塔
"""
思路分析
1.先打印矩形
2.打印直角三角形
3.打印金字塔
4.打印空心金字塔
"""
# 1.先打印矩形
# 使用嵌套循环打印一个5x5的星号方阵
for i in range(5):
    # 外层循环控制行数
    # 内层循环控制每行的星号数
    for j in range(5):
        # 打印星号，end=""参数使输出不换行
        print("*", end="")
    # 完成一行星号的打印后换行
    print()

print("------------------------------")
"""
2.直角三角形
*      1层：1个*
**     2层：2个*
***    3层：3个*
****   4层：4个*
*****  5层：5个*
"""
# 2.打印直角三角形
for i in range(5):
    for j in range(i + 1):
        print("*", end="")
    print()

print("------------------------------")

"""
3.打印金字塔
    *
   ***
  *****
 *******
*********
"""
# 3.打印金字塔
for i in range(6):
    for k in range(5 - i):
        print(" ", end="")
    for j in range(2 * i - 1):
        print("*", end="")

print("--------------------------------")
print()
# 4.打印空心金字塔
# 初始化变量total，用于定义后续打印的菱形的大小
total = 5

# 外层循环控制打印菱形的每一行
for i in range(1, total + 1):
    # 通过空格打印菱形的左半边，使用range函数计算每一行的空格数量
    for k in range(total - i):
        print(" ", end="")
    # 内层循环用于打印每一行的字符，包括空格和星号
    for j in range(2 * i - 1):
        # 判断当前位置是否为每行的首尾位置或最后一行，用于确定打印星号的位置
        if j == 0 or j == 2 * i - 2 or i == total:
            print("*", end="")
        else:
            # 在非星号位置打印空格，用于形成菱形的空心效果
            print(" ", end="")
    # 每一行打印完成后换行
    print()
